/**
 * 模块化api挂载
 */

// 获取api目录所有js文件
const files = require.context('@/libs/api', false, /\.js$/)
// https://uviewui.com/js/http.html#%E4%BD%95%E8%B0%93%E8%AF%B7%E6%B1%82%E6%8B%A6%E6%88%AA%EF%BC%9F
const install = (Vue) => {
	// 将各个定义的接口名称，统一放进对象挂载到vm.$u.api(因为vm就是this，也即this.$u.api)下
	// 自动将所有api挂载到vm.$u.api中
	const apiData = {}
	files.keys().forEach(key => {
		const api = files(key).default
		const modelName = key.replace(/^\.\/|\.js$/g, '')
		apiData[modelName] = {}
		for (let item in api) {
			// uni.$u.api[`${ modelName }.${ item }`] = api[item]
			apiData[modelName][item] = api[item]
		}
	})
	
	/**
	 * 挂载统一模块化api的请求入口，未模块化的请求使用 uni.$u.http
	 * @param {Object} modelApi 请求的api，示例：home.get
	 * @param {Object} params 参数
	 * @param {Object} options 配置参数，参考http.interceptor.js，可单独设置请求头或者请求地址
	 */
	uni.$u.request = function(modelApi, params, options){
		try{
			const [ moduleName, apiName ] = modelApi.split(".")
			return apiData[moduleName][apiName](params, options)
		}catch(e){
			//TODO handle the exception
			throw '请检查是否正确配置api'
		}
	}
    uni.setStorage({
        
    })
}

export default {
	install
}
